mybatis中一对一中表与实体类关系建立方法

您所在的位置:网站首页 mybatis 1对1 mybatis中一对一中表与实体类关系建立方法

mybatis中一对一中表与实体类关系建立方法

2024-01-24 18:23| 来源: 网络整理| 查看: 265

Mybatis学习笔记:

Mybatis中一对一表与实体类关系建立的常用方法

准备表:

Account表

 

User表

 

 

分析:

首先需要在数据库中查询两个表的数据全部数据(这里是以查询全部数据为例子)

建立sql:select u.*,a.id as aid,a.uid,a.money  from account a,user u where u.id=a.uid 注:@sql查询

这里查询到了两个表所有的信息

(脑子里要有sql的概念)

那么对账户表和用户表查询了之后如何封装呢?

需要定义对应的实体类Account和User

定义好之后我们把查询出来的数据如何封装到这两个类当中

为解决字段不一致问题

那么需要做的就是用实体类和表中对应的字段进行resultMap标签对应封装:

在从表Account中定义主表User作为成员并且生成get和set方法,即在从表中定义主表的对象引用即可

解决了这个问题,我们就需要对mapper配置文件进行字段对应封装

首先在mapper标签中:

封装:acconut表的对应实体字段

 这个地方的aid是在查询的过程对account表中的id进行了更名为了aid  

接下:

匹配User类:因为在实体类中是匹配是User的属性

使用association标签中的property="user" column="uid" javaType="user" 注:个人理解user:对应的就是acconut实体类中的字段User user

Column:代表的是uid也就是从表中的外键引用,javaType:为当前引用的类型

     

        select u.*,a.id as aid,a.uid,a.money  from account a,user u where u.id=a.uid; 注:@sql查询

 

 

表对应的实体类:

Account: public class Account implements Serializable {

private Integer id; private Integer uid; private double money; /** * 从表中定义主表的对象引用 */ private User user;

public User getUser() { return user; } public void setUser(User user) { this.user = user; }

public Integer getId() { return id; }

public void setId(Integer id) { this.id = id; }

public Integer getUid() { return uid; }

public void setUid(Integer uid) { this.uid = uid; }

public double getMoney() { return money; }

public void setMoney(double money) { this.money = money; } @Override public String toString() { return "Account{" + "id=" + id + ", uid=" + uid + ", money=" + money + '}'; }

}

User:

public class User implements Serializable { private Integer id; private String username; private Date birthday; private String sex; private String address;

public Integer getId() { return id; }

public void setId(Integer id) { this.id = id; }

public String getUsername() { return username; }

public void setUsername(String username) { this.username = username; }

public Date getBirthday() { return birthday; }

public void setBirthday(Date birthday) { this.birthday = birthday; }

public String getSex() { return sex; }

public void setSex(String sex) { this.sex = sex; }

public String getAddress() { return address; }

public void setAddress(String address) { this.address = address; }

@Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", birthday=" + birthday + ", sex='" + sex + '\'' + ", address='" + address + '\'' + '}'; }

}

 

接口:

 

public interface IAccoutDao {

    /**     * 查询Account和User所有信息操作     *     * @return     */    List findAll();

}

 

 

测试类:

public class MybatisTest01 {    /**     * 初始化     */    private InputStream in;    private SqlSession session;    private IAccoutDao iAccoutDao;

    @Before    public void init() throws IOException {        //1.读取配置文件创建        in = Resources.getResourceAsStream("SqlMapconfig.xml");        //2.sqlsessionFactory创建工厂        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();        SqlSessionFactory factory = builder.build(in);        //3.使用工厂生产sqlsession对象        session = factory.openSession(true);        //4.使sqlSession创建Dao接口的代理对象        iAccoutDao = session.getMapper(IAccoutDao.class);    }

    /**     * 释放资源     */    @After    public void distor() throws IOException {        //6.关闭连接        session.close();        in.close();    }    @Test    /**     * 查询所有测试     */    public void test() throws IOException {        //5.使用代理对象执行方法        List accounts = iAccoutDao.findAll();        for (Account a : accounts) {            System.out.println(a);            System.out.println(a.getUser());        }    }

 测试结果:

 

主要配置文件:

Maven依赖:

pom.xml

    4.0.0    cn.xxy    mybatis一对多查询    1.0-SNAPSHOT    jar                        org.mybatis            mybatis            3.4.5                            mysql            mysql-connector-java            5.1.6                                    log4j            log4j            1.2.12                                    junit            junit            4.10            

 

 

主配置文件:

                                                                                                                                                                                                     

                          select u.*,a.id as aid,a.uid,a.money  from account a,user u where u.id=a.uid;

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3